﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using Metadados;
using MySql.Data.MySqlClient;
using System.Data;


namespace Dados
{
    public class DBFornecedor
    {
        private ConexaoMYSQL objConexao = new ConexaoMYSQL();

        public bool incluir(Fornecedor obj)
        {
            bool blnRetorno = false;

            string strSql = "INSERT INTO Fornecedor (forCpfCnpj, forNome, forInscricaoEstadual, forLogradouro, forNumero, forComplemento," +
                         " forBairro, forCidade, forEstado, forFone, forEmail, forVendedor, forFoneVendedor)" +
                         " VALUES (@p_forCpfCnpj, @p_forNome, @p_forInscricaoEstadual, @p_forLogradouro, @p_forNumero, @p_forComplemento," +
                         " @p_forBairro, @p_forCidade, @p_forEstado, @p_forFone, @p_forEmail, @p_forVendedor, @p_forFoneVendedor)";

            List<MySqlParameter> objParams = new List<MySqlParameter>();
            objParams.Add(new MySqlParameter("@p_forCpfCnpj", obj.forCpfCnpj));
            objParams.Add(new MySqlParameter("@p_forNome", obj.forNome));
            objParams.Add(new MySqlParameter("@p_forInscricaoEstadual", obj.forInscricaoEstadual));
            objParams.Add(new MySqlParameter("@p_forLogradouro", obj.forLogradouro));
            objParams.Add(new MySqlParameter("@p_forNumero", obj.forNumero));
            objParams.Add(new MySqlParameter("@p_forComplemento", obj.forComplemento));
            objParams.Add(new MySqlParameter("@p_forBairro", obj.forBairro));
            objParams.Add(new MySqlParameter("@p_forCidade", obj.forCidade));
            objParams.Add(new MySqlParameter("@p_forEstado", obj.forEstado));
            objParams.Add(new MySqlParameter("@p_forFone", obj.forFone));
            objParams.Add(new MySqlParameter("@p_forEmail", obj.forEmail));
            objParams.Add(new MySqlParameter("@p_forVendedor", obj.forVendedor));
            objParams.Add(new MySqlParameter("@p_forFoneVendedor", obj.forFoneVendedor));

            blnRetorno = objConexao.executarComando(strSql, objParams);

            return blnRetorno;
        }

        public bool atualizar(Fornecedor obj)
        {
            bool blnRetorno = false;

            string strSql = "UPDATE Fornecedor SET forNome = @p_forNome, forInscricaoEstadual = @p_forInscricaoEstadual" +
                            ", forLogradouro = @p_forLogradouro, forNumero = @p_forNumero, forComplemento = @p_forComplemento" +
                            ", forBairro = @p_forBairro, forCidade = @p_forCidade, forEstado = @p_forEstado, forFone = @p_forFone" +
                            ", forEmail = @p_forEmail, forVendedor = @p_forVendedor, forFoneVendedor = @p_forFoneVendedor " +
                            " WHERE forCpfCnpj = @p_forCpfCnpj";

            List<MySqlParameter> objParams = new List<MySqlParameter>();
            objParams.Add(new MySqlParameter("@p_forNome", obj.forNome));
            objParams.Add(new MySqlParameter("@p_forInscricaoEstadual", obj.forInscricaoEstadual));
            objParams.Add(new MySqlParameter("@p_forLogradouro", obj.forLogradouro));
            objParams.Add(new MySqlParameter("@p_forNumero", obj.forNumero));
            objParams.Add(new MySqlParameter("@p_forComplemento", obj.forComplemento));
            objParams.Add(new MySqlParameter("@p_forBairro", obj.forBairro));
            objParams.Add(new MySqlParameter("@p_forCidade", obj.forCidade));
            objParams.Add(new MySqlParameter("@p_forEstado", obj.forEstado));
            objParams.Add(new MySqlParameter("@p_forFone", obj.forFone));
            objParams.Add(new MySqlParameter("@p_forEmail", obj.forEmail));
            objParams.Add(new MySqlParameter("@p_forVendedor", obj.forVendedor));
            objParams.Add(new MySqlParameter("@p_forFoneVendedor", obj.forFoneVendedor));
            objParams.Add(new MySqlParameter("@p_forCpfCnpj", obj.forCpfCnpj));

            blnRetorno = objConexao.executarComando(strSql, objParams);

            return blnRetorno;
        }

        public bool excluir(string p_forCpfCnpj)
        {
            bool blnRetorno = false;

            string strSql = "DELETE FROM Fornecedor WHERE forCpfCnpj = @p_forCpfCnpj";

            List<MySqlParameter> objParams = new List<MySqlParameter>();
            objParams.Add(new MySqlParameter("@p_forCpfCnpj", p_forCpfCnpj));

            blnRetorno = objConexao.executarComando(strSql, objParams);

            return blnRetorno;
        }

        public List<Fornecedor> consultar(string p_forCpfCnpj)
        {
            string strSql = "SELECT forCpfCnpj, forNome, forInscricaoEstadual, forLogradouro, forNumero, forComplemento" +
                         ", forBairro, forCidade, forEstado, forFone, forEmail, forVendedor, forFoneVendedor FROM Fornecedor " +
                         " WHERE forCpfCnpj = @p_forCpfCnpj";

            List<MySqlParameter> objParams = new List<MySqlParameter>();
            objParams.Add(new MySqlParameter("@p_forCpfCnpj", p_forCpfCnpj));

            DataTable objTbFornecedores = objConexao.retornarTabela(strSql, objParams, "Fornecedor");

            List<Fornecedor> objFornecedores = new List<Fornecedor>();
            foreach (DataRow row in objTbFornecedores.Rows)
            {
                Fornecedor objFornecedor = new Fornecedor();
                objFornecedor.forCpfCnpj = (string)row["forCpfCnpj"];
                objFornecedor.forNome = (string)row["forNome"];
                objFornecedor.forInscricaoEstadual = (string)row["forInscricaoEstadual"];
                objFornecedor.forLogradouro = (string)row["forLogradouro"];
                objFornecedor.forNumero = (string)row["forNumero"];
                objFornecedor.forComplemento = (string)row["forComplemento"];
                objFornecedor.forBairro = (string)row["forBairro"];
                objFornecedor.forCidade = (string)row["forCidade"];
                objFornecedor.forEstado = (string)row["forEstado"];
                objFornecedor.forFone = (string)row["forFone"];
                objFornecedor.forEmail = (string)row["forEmail"];
                objFornecedor.forVendedor = (string)row["forVendedor"];
                objFornecedor.forFoneVendedor = (string)row["forFoneVendedor"];

                if (objFornecedor.forCpfCnpj.Length > 14)
                    objFornecedor.forJuridico = true;
                else
                    objFornecedor.forJuridico = false;

                objFornecedores.Add(objFornecedor);
            }

            return objFornecedores;
        }

        public DataView listar(string p_forNome)
        {
            string strSql = "SELECT * FROM Fornecedor WHERE forCpfCnpj <> 0 ";

            List<MySqlParameter> objParams = new List<MySqlParameter>();

            if (p_forNome.Trim() != "")
            {
                strSql += "AND forNome LIKE @p_forNome";
                objParams.Add(new MySqlParameter("@p_forNome", "%" + p_forNome + "%"));
            }

            DataTable objTbFornecedores = new DataTable();

            objTbFornecedores = objConexao.retornarTabela(strSql, objParams, "Fornecedor");

            return objTbFornecedores.DefaultView;
        }
    }
}
